type OptionType = '1' | '2';
type ProductClass = '1' | '2';

/**
 * InstrumentField
 */
export type InstrumentField = {
  ExchangeID: string;
  ExpireDate: string;
  InstrumentID: string;
  InstrumentName: string;
  OpenDate: string;
  OptionsType: OptionType;
  PriceTick: number;
  ProductClass: ProductClass;
  ProductID: string;
  UnderlyingInstrID: string;
  VolumeMultiple: number;
}


export type UserInfo = {
  accessKey: string;
  accessSecret: string;
  accessToken: string;
  address: string[];
  adfs: string;
  affiliation: string;
  alipay: string;
  amazon: string;
  apple: string;
  aud: string[];
  auth0: string;
  avatar: string;
  avatarType: string;
  azuread: string;
  baidu: string;
  battlenet: string;
  bilibili: string;
  bio: string;
  birthday: string;
  bitbucket: string;
  box: string;
  casdoor: string;
  cloudfoundry: string;
  countryCode: string;
  createdIp: string;
  createdTime: string;
  custom: string;
  dailymotion: string;
  deezer: string;
  digitalocean: string;
  dingtalk: string;
  discord: string;
  displayName: string;
  douyin: string;
  dropbox: string;
  education: string;
  email: string;
  emailVerified: boolean;
  eveonline: string;
  exp: number;
  externalId: string;
  facebook: string;
  firstName: string;
  fitbit: string;
  gender: string;
  gitea: string;
  gitee: string;
  github: string;
  gitlab: string;
  google: string;
  groups: string[];
  hash: string;
  heroku: string;
  homepage: string;
  iat: number;
  id: string;
  idCard: string;
  idCardType: string;
  influxcloud: string;
  infoflow: string;
  instagram: string;
  intercom: string;
  isAdmin: boolean;
  isDefaultAvatar: boolean;
  isDeleted: boolean;
  isForbidden: boolean;
  isOnline: boolean;
  iss: string;
  jti: string;
  kakao: string;
  karma: number;
  language: string;
  lark: string;
  lastfm: string;
  lastName: string;
  lastSigninIp: string;
  lastSigninTime: string;
  lastSigninWrongTime: string;
  ldap: string;
  line: string;
  linkedin: string;
  location: string;
  mailru: string;
  managedAccounts: null;
  meetup: string;
  metamask: string;
  mfaEmailEnabled: boolean;
  mfaPhoneEnabled: boolean;
  microsoftonline: string;
  name: string;
  naver: string;
  nbf: number;
  nextcloud: string;
  okta: string;
  onedrive: string;
  oura: string;
  owner: string;
  password: string;
  passwordSalt: string;
  passwordType: string;
  patreon: string;
  paypal: string;
  permanentAvatar: string;
  permissions: string[];
  phone: string;
  preferredMfaType: string;
  preHash: string;
  properties: { [key: string]: any };
  qq: string;
  ranking: number;
  recoveryCodes: null;
  region: string;
  roles: string[];
  salesforce: string;
  score: number;
  shopify: string;
  signinWrongTimes: number;
  signupApplication: string;
  slack: string;
  soundcloud: string;
  spotify: string;
  steam: string;
  strava: string;
  stripe: string;
  sub: string;
  tag: string;
  tiktok: string;
  title: string;
  tokenType: string;
  TokenType: string;
  totpSecret: string;
  tumblr: string;
  twitch: string;
  twitter: string;
  type: string;
  typetalk: string;
  uber: string;
  updatedTime: string;
  vk: string;
  web3onboard: string;
  wechat: string;
  wecom: string;
  weibo: string;
  wepay: string;
  xero: string;
  yahoo: string;
  yammer: string;
  yandex: string;
  zoom: string;
};

export type LoginResult = {
  success: boolean;
  data?: UserInfo;
};

export type LoginParams = {
  username?: string;
  password?: string;
};

export type PageParams = {
  current?: number;
  pageSize?: number;
};